package train.DAY1;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class HomeWork1 {
    
    //网上回文字符串
//
//    static   List<List<String>> listList = new ArrayList<>();
//    public static void main(String[] args) {
//        String s = "aab";
//        List<List<String>> lists = partition(s);
//        System.out.println(lists);
//    }
//    public static List<List<String>> partition(String s) {
//        nextWords(s, 0, new ArrayList<>());
//        return listList;
//    }
//    private static void nextWords(String s, int index, List<String> list){
//        if(index == s.length()){
//            //所有的结果集
//            listList.add(new ArrayList<>(list));
//            return;
//        }
//        for(int i = index; i < s.length(); i++){
//            //获得一个一个的回文子串
//            String subStr = s.substring(index, i + 1);
//            if(isPalindrome(subStr)){
//                list.add(subStr);
//                nextWords(s, i + 1, list);
//                //删除结果集最后一个  然后返回上一层
//                list.remove(list.size() - 1);
//            }
//        }
//    }
//    private static  boolean isPalindrome(String s){
//        for(int i = 0; i <= s.length() / 2; i++){
//            if(s.charAt(i) != s.charAt(s.length() - 1 - i)){
//                return false;
//            }
//        }
//        return true;
//    }

    
    //自己编写回文字符串
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String next = scanner.next();

        List<Object> list2 = new ArrayList<>();
        List<String> list = new ArrayList<>();
        int j=1;
        for (int i = 1; i <next.length(); i++) {
            j=i-1;
            while(j>=0) {
                List<String> list1 = new ArrayList<>();
                String substring = next.substring(j, i+1);
                Boolean pd = Pd(substring);
                if (pd) {
                    list1.add(substring);
                    for (int k = i+1; k < next.length(); k++) {
                        list1.add(String.valueOf(next.charAt(k)));
                    }

                    for (int k = 0; k < j-1; k++) {
                        list1.add(String.valueOf(next.charAt(k)));
                    }
                    if(!list1.isEmpty()) list2.add(list1);

                }

                j--;
            }
        }
        for (int i = 0; i < next.length(); i++) {
            list.add(String.valueOf(next.charAt(i)));
        }
        list2.add(list);
        System.out.println(list2);
    }
    //判断字段是否是回文
    public static Boolean Pd(String k){
        int begin=0,end=k.length(),mid=(begin+end)/2+1;
        Boolean a=true;
        if(end%2==0){   //偶数
            while(end>=begin){
                if(k.charAt(begin)!=k.charAt(end-1))
                    a=false;
                begin++;end--;
            }
        }else{ //奇数
              while(begin<mid&&end>mid){
                  if(k.charAt(begin)!=k.charAt(end-1))
                      a=false;
                    begin++;end--;
              }
        }

        return a;
    }



}
